import random
from datetime  import datetime
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from app01.utils import form
from app01.utils.bootstrap import BootStrapModelForm
from app01 import models
from django.http import JsonResponse
from app01.utils.pagination import Pagination

class OrderModelForm(BootStrapModelForm):
    class Meta:
        model = models.Order
        ##fields = '__all__'
        ## 排除oid，因为订单号是系统自动生成的
        exclude = ['oid','admin']
def order_list(request):
    queryset = models.Order.objects.all().order_by('-id')
    ## 分页功能
    page_object = Pagination(request, queryset)
    form = OrderModelForm()
    context = {
               'form': form,
                'queryset': page_object.page_queryset,
                'page_string': page_object.html
               }
    return render(request,'order_list.html',context)

@csrf_exempt
def order_add(request):
    """新建订单（Ajax）请求"""

    form = OrderModelForm(data=request.POST)
    if form.is_valid():
        ## 动态生成oid订单号 ， 因为订单号不需要用户填写，由系统动态生成
        ## random.randint返回的是一个整数，strftime返回的是一个字符串，需要将整数装换成字符串才能正确拼接，注意
        form.instance.oid = datetime.now().strftime('%Y-%m-%d %H:%M:%S') + str(random.randint(1000, 9999))
        ## 固定设置管理员id，当前登陆系统的是哪个管理员，就设置成哪个ID。这个id应该去session中去获取，id在session中保存7天

        form.instance.admin_id = request.session["info"]["id"]
        form.save()
        return JsonResponse({'status': True})   ## 少写一些代码，等价于
        # return HttpResponse(json.dumps({"status":Ture)}
    return JsonResponse({'status': False, 'error': form.errors})

def order_delete(request):
    ''''删除订单'''
    uid = request.GET.get('uid')
    exists = models.Order.objects.filter(id=uid).exists()
    if not exists:
        return JsonResponse({'status': False,'error':"删除失败，数据不存在"})
    models.Order.objects.filter(id=uid).delete()
    return JsonResponse({'status': True})
